// SISTEMA : Sistema de Identificacao Criminal
// PROGRAMA : SCRP1531
// O QUE FAZ � Manutencao de Usuarios
// Data : 21 de Agosto de 1997

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm1400;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1531 O QUE FAZ � Manutencao de Usuarios *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/scrp1531")
public class Scrp1531 {
	Scrp1531 scrp1531Anterior;
	private String faseproc = "0";
	// Views utilizadas
	SicSenha senhaView = new SicSenha();
	SicSenha senhaView2 = new SicSenha();
	// Telas/relatorios utilizados
	Scrm1400 scrm1400;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	public int jMatriculaCadastrado;
	private String jSenhaArq;
	private int jData;
	private String[] jTabMes = { null, "Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" };

	private int nroReg = 1;

	private Scrm1400 preMapas() {
		scrm1400 = new Scrm1400(true, sessao);
		scrm1400.setJmatriculacadastrado(jMatriculaCadastrado);
		sessao.getScrg001().setWVltw(7);
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName().toUpperCase());
		return scrm1400;
	}

	private Scrm1400 preMapas1530() {
		scrm1400 = new Scrm1400(true, sessao);
		sessao.getScrg001().setWVltw(13);
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName().toUpperCase());
		sessao.getScrg001().setWFuncaow("CONSULTA");
		scrm1400.setJfuncaoj("CONSULTA");
		scrm1400.enviarMensagem(null, "");
		return scrm1400;
	}

	public Scrp1531(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm1400 scrm1400) {
		try {
			main(scrm1400);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm1400 pscrm1400) {
		if (pscrm1400 == null) {
			primeiraVez = true;
			scrm1400 = preMapas();
			scrm1400.setNavegar("../scrp1531/executar");
		} else {
			// scrm1400.receberTela(false, result);
			restaurarEstados(pscrm1400);
		}

		// Par�grafo: fd0()

		switch (faseproc) {
		case "0": {
			senhaView.pesquisaMatriculaMaiorigClas(scrm1400.getJmatriculacadastrado());

			if (senhaView.registrosProcessados() == 0) {
				scrm1400.enviarMensagem(null, "Usuario n�o encontrato no Sistema");
				sessao.setAtributo("Scrp1531", this);
				result.include("scrm1400", scrm1400);
				scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());

				return;
			} else {
				faseproc = "1";
				exibirUsuario();
				sessao.setAtributo("Scrp1531", this);
				result.include("scrm1400", scrm1400);
				scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}

		}
		case "1": {
			if (senhaView.pesquisaMatriculaMaiorigClas(scrm1400.getJmatriculacadastrado())) {

				exibirUsuario();
				faseproc = "1";
			} else {

				scrm1400 = preMapas1530();
				scrm1400.setMensagem("FIM DE CONSULTA");
				faseproc = "0";

				Scrp1530 scrp1530 = new Scrp1530(this.result, this.sessao);
				scrp1530.executar(scrm1400, null);

			}
		}

		}
		// MOVEATTR

		// senhaView.fecha();
		sessao.setAtributo("Scrp1531", this);
		result.include("scrm1400", scrm1400);
		if (!result.used()) {
			scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void restaurarEstados(Scrm1400 pscrm1400) {
		this.scrp1531Anterior = (Scrp1531) sessao.getAtributo("Scrp1531");
		if (pscrm1400 != null) {
			scrm1400 = pscrm1400;
		} else {
			scrm1400 = this.scrp1531Anterior.scrm1400;
		}
		scrm1400.setSessao(sessao);
		this.faseproc = this.scrp1531Anterior.faseproc;

		if (scrm1400.getJmatriculacadastrado() != 0 && !faseproc.equals("0")) {
			scrm1400.setJmatriculacadastrado(scrp1531Anterior.scrm1400.getJmatriculacadastrado());
			senhaView = scrp1531Anterior.senhaView;
		}
	}

	private void exibirUsuario() {
		scrm1400.setJmatriculacadastrou(senhaView.getMatAtualizador());
		scrm1400.setJmatriculacadastrado(senhaView.getMatricula());
		scrm1400.setJnomecadastrado(senhaView.getNome());
		jSenhaArq = senhaView.getSenha();

		scrm1400.setJseunivel(String.valueOf(senhaView.getNivel()));
		scrm1400.setJopcao(senhaView.getNivel());
		jData = senhaView.getDataProc();

		scrm1400.setJhoras(UtilBean.formataNumberToHoraHHMMSS(senhaView.getHoraProc()));
		scrm1400.setJdia((int) UtilBean.extraiDigitos(jData, 8, 6, 2));
		scrm1400.setJano(UtilBean.extraiDigitos(jData, 8, 0, 4) + "");

		scrm1400.setJnomedomes(jTabMes[(int) UtilBean.extraiDigitos(jData, 8, 4, 2)]);
		scrm1400.setJseuniveltxt("Seu nivel de acesso e'");
		// MOVEATTR
		// MOVEATTR
		// MOVEATTR
		// Par�grafo: fd1()
		senhaView2.consultaMatricula(senhaView.getMatAtualizador());

		scrm1400.setJnomecadastrou(senhaView2.getNome());
		senhaView2.fecha();
		// senhaView.fecha();
		// MOVEATTR
		scrm1400.setMensagem("PROCESSAR PARA PR�XIMO");

	}

}
